Data communications systems which include more than one communications subsystem typically utilize a serial crossbar switch to functionally interconnect the subsystems. A serial crossbar switch is a hardware device which permits high-speed serialized data communication between the subsystems. The switch physically attaches to each subsystem by means of an input/output (I/O) port comprising an individual pair of optical fibers or wires. One of the pair of fibers or wires for each subsystem is used for transmitting information to other systems through the switch, and the other is used for receiving information from other systems via the switch.
The internal switching fabric of the serial crossbar switch provides for connections between any two connected subsystems. The subsystems communicate with each other over these connections, or data paths, which logically establish connections between the transmit wire of a source (or calling) subsystem with a receive wire of a destination (or called) subsystem. In this manner, the switching fabric of the serial crossbar switch provides internal connection crosspoints which eliminate connection blocking. Connections between more than one pair of subsystems may exist concurrently. This concurrency gives the serial crossbar switch a significant performance advantage over single threaded interconnects such as serial ring networks, wherein only one connection between subsystems is permitted at a time.
The communications which occur between subsystems via the serial crossbar switch consist of data and data acknowledgement control messages. The control messages may precede or follow the data which is sent over the switch, and provide information to the source and destination subsystems relating to the data transmitted. For example, calling subsystems request connections to and subsequent disconnections from other called subsystems via the switch by sending serially encoded connect request and disconnect request link level control messages to the called subsystems. The called subsystem responds to the calling subsystem request with a control message either acknowledging or not acknowledging the request. In addition, data acknowledge messages or error messages are sent by a called subsystem to a calling subsystem after a data transfer sequence has been completed. Because an acknowledgement message from the called subsystem indicates to the calling subsystem whether or not data has been lost during transmission, a data sequence transmission cannot be considered to have been successfully completed until the calling subsystem receives positive acknowledgement messages for each transmitted data sequence.
Conventional serial crossbar switch designs operate on the basis of full duplex connectivity. In a full duplex connection, the switch logically connects the transmit wire of the calling subsystem to the receive wire of the called subsystem, while simultaneously logically connecting the transmit wire of the called subsystem to the receive wire of the calling subsystem. In this manner, each subsystem has a simultaneous communication path to and from the other connected subsystem in which to transfer control messages and data. One disadvantage of full duplex connectivity, however, is that communications between the subsystems is unidirectional along the separate transmit and receive paths. The data is transmitted along the transmit wire of the calling subsystem to the receive wire of the called subsystem, with only an occasional link level data acknowledgement control message sent in return along the transmit wire of the called subsystem to the receive wire of the calling subsystem. This underutilization of the reverse data path in a full duplex connection results in wasting nearly half of the potential throughput capacity of a serial crossbar switch.
The wasted throughput capacity of a full duplex switch design may be recovered if a switch is instead designed to operate on the basis of simplex connectivity. In a simplex connection, a switch logically connects the transmit wire of the calling subsystem to the receive wire of the called subsystem. However, unlike the full duplex connection, a simplex connection does not provide a separate reverse path for returning control messages. Control messages addressed to the called subsystem may be received by the called subsystem from other subsystems on its receive link, and control messages sent by the calling subsystem may be sent to other subsystems on its transmit link. The transmit link of the called subsystem is available to allow the called subsystem to establish connections with other subsystems, while at the same time, the receive link of the calling subsystem is available to allow connections to the calling subsystem from other subsystems.
Because a simplex switch does not allocate independent reverse connection paths, a different technique must be provided to route the required data acknowledgement control messages from a called subsystem to a calling subsystem. Two approaches are generally recognized for accomplishing this. First, upon completion of a data transfer, the subsystem that received the data may become a calling subsystem by requesting a connection to the subsystem that sent the data and which is now a called subsystem. The data acknowledgement control messages are then sent along this connection.
Alternatively, the simplex switch may provide a packet router function to route data acknowledgement control messages to the appropriate subsystems without establishing connections between the subsystems. The switch accomplishes its packet router function without establishing connections between the subsystems by a store-and forward technique wherein control messages are temporarily stored in buffers in the switch prior to delivery to the appropriate subsystem. Of these two simplex design techniques, the store-and-forward packet routing method is technically preferred because of the speed advantage achieved by eliminating the switching time delays associated with establishing switch connections.
Simplex serial crossbar switches provided with a store-and-forward function, however, may not be easily cascaded with other like switches in systems having more subsystems than one switch can accommodate. The data throughput performance of a system interconnected by such a simplex switch depends on the speed in which the link layer control messages are routed between subsystems by the switch. Because two cascaded switches, each having subsystems attached thereto, are typically connected by a single I/O port to construct such a system, bottlenecks are likely to occur as a result of the large number of link layer control messages sent through this I/O port between the group of subsystems attached to the first switch of the cascaded pair and the group of subsystems attached to the second switch.
The ratio of the required buffer size at a cascade I/O port to the buffer size at a subsystem attached I/O port is equal to the ratio of the maximum number of control messages that can pass through the cascade I/O port to the maximum number of control messages that can pass through the subsystem attached I/O port. Because the number of control messages passing through the cascade I/O port is typically much greater than that passing through a subsystem attached I/O port, the size of buffers at the cascade I/O port must be significantly greater than those at a subsystem attached I/O port. If not, system performance will be hampered by delays introduced by control message flow at the cascade I/O port.
Accordingly, there is a need for an improved simplex store-and-forward serial crossbar switch design having I/O ports which may be used in either a subsystem attached configuration a cascaded configuration, without uniquely designing expanded buffer sizes at the I/O ports operating in a cascade configuration. It is an object of the present invention, then, to provide a design scheme for such a switch without adversely affecting switching performance and without unnecessarily increasing the buffer size at subsystem attached I/O ports.